The present invention is related to storage architectures, and more particularly to methods, and systems that provide storage architectures to access storage management data.
Storage networking is the practice of connecting storage devices to computing devices (e.g., clients, servers, and the like) by using networks (e.g., Fibre Channel, Internet Small Computer System Interface (iSCSI), and others) instead of traditional point-to-point Small Computer System Interface (SCSI) channels. A network used to connect servers to storage devices is referred to as a storage area network (SAN). Typically, within a SAN environment, computing devices have access to the available storage devices. This presents a wide variety of benefits, including server platform fail-over wherein a failed storage device and failed server are automatically recovered by another operational server platform and operational storage device without requiring any recabling of the operational storage devices.
Prior to the development of SAN technology, local and wide area networks provided access between computing devices that did not always include storage devices. Connections were established with network protocols such as Transmission Communication Protocol (TCP), Unreliable Datagram Protocol (UDP), and others. Some of these protocols ensure that message ordering is preserved and that messages are not lost. Distributed File Systems (DFS) such as network file system (NFS) and Common Internet file system (CIFS) are layered on top of network protocols. Distributed File Systems provide uniformed named access to files and their data storage devices across a network consisting of heterogeneous computing devices. Using DFS, access to files or data storage devices is transparent to any particular computing device. Thus, access is consistent across the DFS without the need for physical locations or other details associated with any particular file or data. This access transparency is often referred to as storage virtualization.
Storage arrays provide access to storage disks within a shared storage environment. The storage arrays include the storage disks, software to access those storage disks, controllers, memory, power supplies, and the like. Host applications within the shared storage environment communicate with the storage arrays to gain access to storage locations on the storage disks controlled by the storage arrays. However, this access is typically in the form of vendor-specific interfaces provided by the vendors of the storage arrays. In some cases, vendors provide software libraries to gain access to the storage arrays (e.g., by implementing APIs). In other cases, vendors provide command line interfaces, where the commands are encoded in a specific data format, such as Extensible Markup Language (XML) data format and others.
Often storage management applications are interposed between the host applications and the underlying physical storage arrays. This is done, to free the host applications from the responsibilities of maintaining storage as well as to centralize storage management. Each storage management application is responsible for managing storage for a plurality of host applications and a plurality of storage arrays. However, in a heterogeneous shared storage environment with disparate storage arrays, the storage management applications are forced to know and manage a variety of interfaces in order to properly maintain and manage storage for the host applications.
Moreover, existing storage architectures do not make storage management data centrally accessible to the applications that manage each vendor""s storage arrays. Storage management data is critical to any storage architecture; it includes, for instance, configuration settings associated with each storage array. Conventionally, applications aggregate the storage management data from the storage arrays and assimilate the results in isolation from other applications. However, if the various applications are not well integrated and coordinated, then the quality and timeliness of the storage data can be impacted.
Therefore, there is a need for a system and method for flexibly managing storage. Furthermore, there is a need to centrally provide storage management data, where the storage management data can be accessed by each of the applications in order to provide a consistent representation of a storage environment.
According to one aspect of the present invention, a method of managing storage across a heterogeneous storage environment is presented. A storage management application is provided that is interfaced to a host application. A plurality of storage resource provider modules is associated with the storage management application. Moreover, storage management data is stored on a storage management data store. The storage management data is associated with the storage management application and with each of the storage resource provider modules. Further, the storage management application accesses the data store when receiving a request to access a selected storage resource from the host application in order to be assigned to one of the storage resource provider modules by the data store. The assigned storage resource provider module retrieves and stores storage management data from and to the data store in order to satisfy the request.
According to another aspect of the present invention, a storage management architecture system is provided. The storage management architecture system includes a plurality of storage resources, a plurality of storage resource provider modules, and a storage management data store having storage management data. Each of the storage resource provider modules interfaces with a different storage resource, and stores and retrieves storage management data from and to the data store in order to maintain a consistent storage environment representation in the data store.
According to yet another aspect of the present invention, another storage management architecture system is disclosed. The storage management architecture system includes a plurality of storage resources, where each storage resource includes an interface used to perform storage management operations on the storage resources, and where two or more of the interfaces are different from one another. The storage management architecture system also includes a plurality of storage resource provider modules, where each storage resource provider module communicates with one of the interfaces. Additionally, the storage management architecture system includes a storage management data store capable of storing storage management data associated with the storage management operations. The storage resource provider modules act as an intermediary on behalf of a calling application when processing the storage management operations, and the provider modules retrieve and store results associated with processing the storage management operations in the data store.